Information stored in a database system may be shared with other database systems. For example, data in a database system may be replicated to another database system. Data replication may be done in two stages. In the first stage, a replica database system may be instantiated at a target site. This replica database system may only comprise a part of an overall database system at the target site. At the end of this (instantiation) stage, a copy of data in a database system at a source site that exists at a particular point in time will have been instantiated to the target site. In the second stage, any data, including both incremental changes and new data, that has been added after the particular point in time at the source site may be captured and transferred to the target site.
However, if the incoming rate of incremental changes at the source site is high and the instantiation window is large, then the instantiation may take a long time (i.e. the data to be copied in the first stage may be large). As a result, many incremental changes may be cumulated at the source site during the first stage, waiting to be transferred in the second stage. As a result, even when the first (instantiation) stage is finished, the data replicated only represents a very stale version of data at the source site.
Therefore, a disadvantage is that, if the incoming rate of incremental changes is very high and close to the capacity, then it may take an unacceptable amount of time before the replica site can reach a “steady state” with respect to the source site.
An additional disadvantage is that these techniques often require that newly created tables at the source site be instantiated in the first stage, thereby causing suspension and further delays in the second stage of incremental data change transfers.
Therefore, a better mechanism, which would better support replication and instantiation between databases, is needed.